#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
日志工具，用于记录和显示日志信息
"""

import time
import threading

class Logger:
    """日志记录器"""
    
    def __init__(self, log_area=None):
        """
        初始化日志记录器
        
        Args:
            log_area: UI日志区域组件，用于显示日志
        """
        self.log_area = log_area
        self.lock = threading.Lock()
    
    def _log(self, message, level="INFO"):
        """
        记录日志
        
        Args:
            message: 日志消息
            level: 日志级别
        """
        timestamp = time.strftime("%H:%M:%S", time.localtime())
        log_message = f"[{timestamp}] [{level}] {message}"
        
        # 打印到控制台
        print(log_message)
        
        # 如果有日志区域组件，则添加到UI
        if self.log_area:
            with self.lock:
                # 检查消息长度，如果太长则截断
                max_length = 100  # 最大字符数
                if len(log_message) > max_length:
                    # 保留前半部分和后半部分，中间用省略号代替
                    truncated_message = log_message[:max_length//2] + "..." + log_message[-max_length//2:]
                    self.log_area.add_log(truncated_message, level)
                else:
                    self.log_area.add_log(log_message, level)
    
    def info(self, message):
        """记录信息日志"""
        self._log(message, "INFO")
    
    def warning(self, message):
        """记录警告日志"""
        self._log(message, "WARNING")
    
    def error(self, message):
        """记录错误日志"""
        self._log(message, "ERROR")
    
    def success(self, message):
        """记录成功日志"""
        self._log(message, "SUCCESS")